<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>Aquamat: Dokumentacja pliku top_off.c</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Wygenerowano przez Doxygen 1.6.1 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Strona&nbsp;główna</span></a></li>
      <li><a href="pages.html"><span>Dodatkowe&nbsp;strony</span></a></li>
      <li><a href="annotated.html"><span>Struktury&nbsp;Danych</span></a></li>
      <li class="current"><a href="files.html"><span>Pliki</span></a></li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="files.html"><span>Lista&nbsp;plików</span></a></li>
      <li><a href="globals.html"><span>Globalne</span></a></li>
    </ul>
  </div>
</div>
<div class="contents">
<h1>Dokumentacja pliku top_off.c</h1><h3>(r58/r57)</h3>
<p>Implementacja automatycznej dolewki.  
<a href="#_details">Więcej...</a></p>
<code>#include &quot;<a class="el" href="aquamat_8h_source.html">aquamat.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="commonDefs_8h_source.html">commonDefs.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="top__off_8h_source.html">top_off.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="outputs_8h_source.html">outputs.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="alarms_8h_source.html">alarms.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="log_8h_source.html">log.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="hd44780_8h_source.html">hd44780.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="strings_8h_source.html">strings.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="ui_8h_source.html">ui.h</a>&quot;</code><br/>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Funkcje</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="top__off_8c.html#a1d360a830a49600a348183cf58599ffe">top_off_process</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="top__off_8c.html#aa5a62c54928a77b58351d23c9a8dc7f8">top_off_check_time</a> (void)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="top__off_8c.html#a2e0fe9dc427bb4bb5534aea55615623f">top_off_on</a> (void)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="top__off_8c.html#a4b81666e534c9874d3efcdadff93c8f5">top_off_off</a> (void)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="top__off_8c.html#a743081d331bb2971b88c3bc6d98c65a7">top_off_unblock_run</a> (void)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="top__off_8c.html#a794f4a6592b18d90adf7c67754f12763">top_off_init</a> (void)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="top__off_8c.html#ae30b85c2efc165cb0bb295298abf9612">top_off_status_display</a> ()</td></tr>
<tr><td colspan="2"><h2>Zmienne</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structTOP__OFF.html">TOP_OFF</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="top__off_8c.html#a7aaf60666b3c3620441c847b5a6c1503">top_off</a></td></tr>
</table>
<hr/><a name="_details"></a><h2>Opis szczegółowy</h2>
<p>Implementacja automatycznej dolewki. </p>
<p>Automatyczna dolewka domyślnie wykorzystuje 3 czujniki poziomu wody: 2 w sumpie (top_off_max_sump , top_off_min_sump) i jeden w zbiorniku na wodę RO (top_off_min_ro ) . Ten ostatni służy do zabezpieczenia pompy przed pracą na sucho.</p>
<p>Dodatkowym zabezpieczeniem jest licznik pracy pompy. Przekroczony czas pompy skutkuje zatrzymaniem pracy pompy (ustawiany jest bit blokady), niezależnie od stanu czujników. Dodatkowo wystawiany jest alarm. Ponowna praca pompy możliwa jest po skasowaniu alarmu i blokady pracy pompy.</p>
<div align="center">
<img src="top_off.png" alt="top_off.png"/>
</div>
<p>Algorytm działania automatycznej jest następujący:</p>
<div class="fragment"><pre class="fragment">
TOP_OFF_MAX_SUMP TOP_OFF_MIN_SUMP TOP_OFF_MIN_RO TOP_OFF_BLOCK_MIN_RO OP_OFF_MAX_RUN_REACHED TOP_OFF_RUNNING
     X                X                 X                  X                  aktywny            wył.(0)
  aktywny             X                 X                  X                    X                wył.(0)
     X                X              aktywny           niekatywny               X                wył.(0)
     X             aktywny           nieaktywny            X                    X                wł.(1)
</pre></div><h2><a class="anchor" id="adsensors">
Podłączenie czujników</a></h2>
<p>Automatyczna dolewka obsługuje 3 czujniki. Podłaczenie czujnika ADMAX (NO) i ADMIN (NC) pokazano na poniższym zdjęciu.</p>
<div align="center">
<img src="jack_ad.jpg" alt="jack_ad.jpg"/>
</div>
 <hr/><h2>Dokumentacja funkcji</h2>
<a class="anchor" id="aa5a62c54928a77b58351d23c9a8dc7f8"></a><!-- doxytag: member="top_off.c::top_off_check_time" ref="aa5a62c54928a77b58351d23c9a8dc7f8" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void top_off_check_time </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

</div>
</div>
<a class="anchor" id="a794f4a6592b18d90adf7c67754f12763"></a><!-- doxytag: member="top_off.c::top_off_init" ref="a794f4a6592b18d90adf7c67754f12763" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void top_off_init </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Inicjalizuje ustawienia dla top_off </p>

</div>
</div>
<a class="anchor" id="a4b81666e534c9874d3efcdadff93c8f5"></a><!-- doxytag: member="top_off.c::top_off_off" ref="a4b81666e534c9874d3efcdadff93c8f5" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void top_off_off </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

</div>
</div>
<a class="anchor" id="a2e0fe9dc427bb4bb5534aea55615623f"></a><!-- doxytag: member="top_off.c::top_off_on" ref="a2e0fe9dc427bb4bb5534aea55615623f" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void top_off_on </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

</div>
</div>
<a class="anchor" id="a1d360a830a49600a348183cf58599ffe"></a><!-- doxytag: member="top_off.c::top_off_process" ref="a1d360a830a49600a348183cf58599ffe" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void top_off_process </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Sprawdza warunki włączenia pompy automatycznej dolewki </p>

</div>
</div>
<a class="anchor" id="ae30b85c2efc165cb0bb295298abf9612"></a><!-- doxytag: member="top_off.c::top_off_status_display" ref="ae30b85c2efc165cb0bb295298abf9612" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void top_off_status_display </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

</div>
</div>
<a class="anchor" id="a743081d331bb2971b88c3bc6d98c65a7"></a><!-- doxytag: member="top_off.c::top_off_unblock_run" ref="a743081d331bb2971b88c3bc6d98c65a7" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void top_off_unblock_run </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Usuwa bit maksymalnego czasu pracy pompy i usuwa alarm </p>

</div>
</div>
<hr/><h2>Dokumentacja zmiennych</h2>
<a class="anchor" id="a7aaf60666b3c3620441c847b5a6c1503"></a><!-- doxytag: member="top_off.c::top_off" ref="a7aaf60666b3c3620441c847b5a6c1503" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct <a class="el" href="structTOP__OFF.html">TOP_OFF</a> <a class="el" href="top__off_8h.html#a7aaf60666b3c3620441c847b5a6c1503">top_off</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Przechowuje strukturę automatycznej dolewki. </p>

</div>
</div>
</div>
<hr size="1">
<div style="text-align: center;">
<small>Projekt udostępniony jest na zasadach Open Source. Zapoznaj się z warunkami licencji w pliku COPYING znajdujacym się w katalogu głównym.	</small>
</div>

<hr size="1">
<div style="text-align: center;">
Aquamat - sterownik akwarystyczny Open Source
<br/>
Copyright (C) 2009  <a href="http://todryk.pl">Wojciech Todryk</a> (wojciech(at)todryk(dot)pl)
</div>

<div style="text-align: right;">
<small>Dokumentację wygenerowano za pomocą programu&nbsp;</small>
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a>
<small> wersja 1.6.1 (Fri Apr 23 22:48:16 2010)&nbsp;</small>
</div>
